package br.com.jmmarca.controller;

//import br.com.jmmarca.model.Visitante;
import java.util.ArrayList;
import java.util.List;

import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TabHost.TabSpec;
import android.widget.Toast;
import br.com.jmmarca.dao.impl.VisitanteDAO;
import br.com.jmmarca.model.Visitante;
import br.com.jmmarca.util.AppException;
import br.com.jmmarca.util.Utils;

public class CrudVisitanteBasico extends GenericTabActivity {

	private static final String TAG_LOG = "App_crudvisitante";
	List<Visitante> listaVisitantes = new ArrayList<Visitante>();
	ArrayAdapter<Visitante> adaptador = null;
	EditText nome = null;
	EditText email = null;
	EditText telefone = null;
	VisitanteDAO gerenciador;
	Integer idRegistro = null;

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.visitante_main);
		gerenciador = VisitanteDAO.getInstance(getApplicationContext());

		nome = (EditText) findViewById(R.id.txt_vis_nome);
		email = (EditText) findViewById(R.id.txt_vis_email);
		telefone = (EditText) findViewById(R.id.txt_vis_telefone);

		Button salvar = (Button) findViewById(R.id.btnSalvar);
		salvar.setOnClickListener(onSave);
		Button cancelar = (Button) findViewById(R.id.btnCancelar);
		cancelar.setOnClickListener(onCancel);

		TabSpec descritor = getTabHost().newTabSpec("tag2");
		descritor.setContent(R.id.detalhesVisitante);
		descritor.setIndicator("Cadastrar",
				getResources().getDrawable(R.drawable.add));
		getTabHost().addTab(descritor);

		getTabHost().setCurrentTab(0);

		carregaFormulario();
	}

	public void carregaFormulario() {
		Log.w(TAG_LOG, "carregaFormulario");
		if (idRegistro != null) {

			Visitante visitante = gerenciador.encontrar(idRegistro);
			if (visitante != null) {
				nome.setText(visitante.getNome());
				email.setText(visitante.getEmail());
				telefone.setText(visitante.getTelefone());
			} else {
				Utils.msg(getApplicationContext(), "Registro não encontrado");
			}
		} else {
			nome.setText("");
			email.setText("");
			telefone.setText("");
		}
	}

	private void salvarCadastro() {
		try {
			if (nome.getText().toString().equals("")) {
				throw new AppException("O Campo Nome é requerido!");
			}
			if (email.getText().toString().equals("")) {
				throw new AppException("O Campo Email é requerido!");
			}
			if (telefone.getText().toString().equals("")) {
				throw new AppException("O Campo Senha é requerido!");
			}
			
			VisitanteDAO visitanteDAO = VisitanteDAO
					.getInstance(getApplicationContext());
			Visitante visitanteSalvo;
			try {

				visitanteSalvo = visitanteDAO.getByClause("email = ?",
						new String[] { email.getText().toString() });
			} catch (Exception e) {
				// TODO: handle exception
				visitanteSalvo= null;
			}
			
			if(visitanteSalvo!=null){
				throw new AppException("E-mail já cadastrado!");
			}
	

			Log.w(TAG_LOG, "Salvando Cadastro");

			Visitante visitante = new Visitante(idRegistro);
			visitante.setNome(nome.getText().toString());
			visitante.setEmail(email.getText().toString());
			visitante.setTelefone(telefone.getText().toString());

			Integer idVisitante = gerenciador.salvar(visitante);
			// Atualiza lista
			listaVisitantes = gerenciador.listar();

			getTabHost().setCurrentTab(0);
			// Registro selecionado
			idRegistro = null;
			carregaFormulario();

			Toast msg = Toast.makeText(this, "Dado Salvo com Sucesso!",
					Toast.LENGTH_LONG);
			msg.show();

			// Volta para a tela antiga e inicia a apresentacao
			Intent returnIntent = new Intent();
			returnIntent.putExtra("idVisitante", idVisitante);
			setResult(RESULT_OK, returnIntent);
			finish();
			
		} catch (Exception e) {
			Utils.msg(getApplicationContext(), "Erro: "+e.getMessage());
		}

	}

	@Override
	public void onDestroy() {
		super.onDestroy();
	}

	private OnItemClickListener onListClick = new OnItemClickListener() {

		@Override
		public void onItemClick(AdapterView<?> parent, View view, int position,
				long id) {
			Visitante ev = listaVisitantes.get((int) id);
			idRegistro = ev.getId();
			if (idRegistro != null) {
				carregaFormulario();
			}

			getTabHost().setCurrentTab(1);
		}
	};

	private OnClickListener onSave = new OnClickListener() {

		@Override
		public void onClick(View arg0) {
			salvarCadastro();
		}
	};
	private OnClickListener onCancel = new OnClickListener() {

		@Override
		public void onClick(View arg0) {
			idRegistro = null;
			carregaFormulario();
			// Volta para Listagem
			getTabHost().setCurrentTab(0);

			Intent returnIntent = new Intent();
			setResult(RESULT_CANCELED, returnIntent);
			finish();
		}
	};

}